MENTAL, UN MODELO
COMPUTACIONAL
UNIVERSAL

“Es posible inventar una sola máquina que pueda ser utilizada para calcular cualquier secuencia computable” (Alan Turing)

“Todo algoritmo o procedimiento efectivo es computable por una máquina de Turing” (Tesis Church-Turing)

“El modelo computacional es la realidad, no un medio para estudiarla” (Heinz Pagels)



Computación, Algoritmo y Modelos Computacionales

Computación vs. Algoritmo

En primer lugar, hay que diferenciar entre computación y algoritmo: Ambos conceptos (computación y algoritmo) son difíciles de definir de forma precisa, por lo que se acude a los denominados “modelos computacionales”, que son formalismos generales que permiten implementar computaciones y algoritmos concretos. Estos modelos son tesis, es decir, no son demostrables porque se establecen como fundamento.


El cálculo lambda de Church

El primero en proponer un modelo computacional fue Alonzo Church, en 1936, mediante el llamado “cálculo lambda” (lambda calculus), un cálculo de tipo funcional y recursivo para formalizar las funciones computables. Este sistema, que incluía un lenguaje formal, proponía un modelo basado en expresiones funcionales, que son funciones definidas a partir de otras funciones. La tesis de Church era: “Una función de enteros positivos es efectivamente calculable solo si es recursiva”.

Cuando se inventó el cálculo lambda, los ordenadores todavía no existían. Sin embargo, se puede considerar el primer lenguaje funcional de la historia. Posteriormente ha constituido el fundamento de muchos lenguajes funcionales, habiendo tenido también gran influencia en el diseño de los lenguajes de programación en general.

El propósito original de Church era construir un sistema formal para toda la matemática, pero para evitar que aparecieran paradojas (como la de Russell) al construir expresiones autorreferenciales, separó el cálculo lambda y lo utilizó para formalizar la computabilidad.


La máquina de Turing

Pocos meses después de que Church hiciera público su modelo funcional, Alan Turing propuso (sin tener conocimiento de la propuesta de Church) un modelo alternativo, aún más simple: un dispositivo teórico que hoy denominamos “máquina de Turing”, basada en unas pocas operaciones básicas que permitían implementar cualquier algoritmo. En este caso, no había un lenguaje formal.

Posteriormente se inventaron otros modelos de computación para implementar la noción de algoritmo, como las funciones recursivas parciales de Gödel, los algoritmos de Markov y la máquina de Post.

Todos estos modelos, aunque aparentemente diferentes, han demostrado ser equivalentes. Esto ha conducido a la aceptación universal de lo que se conoce como tesis de Church-Turing: el concepto intuitivo de algoritmo puede ser implementado mediante una máquina de Turing o mediante las funciones recursivas del cálculo lambda. Ambos enfoques (operativo y funcional, respectivamente) delimitan el máximo poder computacional posible. Todo algoritmo que se pueda describir mediante el cálculo lambda puede describirse también mediante una máquina de Turing, y viceversa. La tesis de Church-Turing es considerada como la ley fundamental de la computación.

Turing, en su famoso artículo de 1936 “On Computable Numbers, with an Application to the Entscheidungsproblem” (publicado en la revista “Proceedings of the London Mathematical Society) ideó un dispositivo teórico universal para implementar algoritmos. Este modelo se convirtió en el modelo estándar de computación, el más popular y paradigmático por ser el más simple e intuitivo y ofrecer una imagen que enlazaba la computación teórica con un dispositivo físico abstracto. Este modelo, además, ha sido el inspirador de la arquitectura de los ordenadores.

Los conceptos en los que se basa esta máquina teórica son extraordinariamente simples:
  1. Un espacio de memoria lineal (cinta), compuesta por una secuencia infinita de celdas numeradas. “Infinita” hay que interpretarlo como “ilimitada”, en el sentido de que al principio la cinta es finita y se van añadiendo celdas a medida que se necesitan.

  2. Un conjunto finito de símbolos de un alfabeto.

  3. Un conjunto finito de estados posibles de la máquina.

  4. Una cabeza lectora/grabadora (o cabezal) de símbolos de un alfabeto sobre la cinta. Inicialmente la cinta finita tiene blancos y las celdas que se van añadiendo contienen también blancos.

  5. Un conjunto de reglas (también finito) del tipo “condición → acción”. Las reglas son de la forma (E1, S1S2, M, E2), con 2 condiciones y 3 acciones:

Observaciones:
La máquina de Turing universal

La máquina de Turing universal (MTU) es una meta-máquina, una máquina de máquinas, una máquina general que puede simular cualquier máquina de Turing particular. Es una máquina de Turing que contiene al principio de la cinta la codificación de una máquina de Turing particular basada en la tabla de reglas (condiciones − acciones), reglas que se pueden codificar mediante los valores asociados a las condiciones y a las acciones. Por ejemplo:

CondicionesAcciones
Estado actualSímbolo leídoSímbolo a grabarMov. cabezaNuevo estado
1acDerecha2
2baIzquierda3
3cbDerecha1


La notable aportación de Turing

Turing, en su famoso artículo de 1936 logró varias cosas:
Limitaciones de la máquina de Turing

A pesar de las virtudes de la máquina de Turing, existen muchas limitaciones que cuestionan seriamente la validez o utilidad de este modelo computacional, limitaciones que apuntan la necesidad de sustituirlo por otro más general y completo. La máquina de Turing es reconocida como una idea brillante que dio origen a la idea de “ordenador de propósito general”. Pero hoy día la máquina de Turing es claramente insuficiente por las limitaciones señaladas.

El propio Turing ideó unas extensiones de su máquina teórica presentada en 1936. Las introdujo en su tesis doctoral de 1938 “Systems of Logic Based on Ordinals” [Turing, 1939]. [ver Adenda.]

Según la tesis de Church-Turing, la máquina de Turing representa no solo lo computable sino también los límites de lo computable. Todo algoritmo o procedimiento efectivo es computable por una máquina deTuring. Máquina de Turing y algoritmo han llegado a significar la misma cosa, pues la máquina de Turing ha conseguido concretar el concepto difuso de algoritmo como “procedimiento efectivo” de computación. En este sentido, la computación sería un tema absolutamente cerrado a otras alternativas de tipo lógico, matemático, físico o biológico.

Sin embargo, desde que apareció la máquina de Turing, se ha planteado repetidamente la cuestión de la existencia de un modelo computacional superior a la máquina de Turing. Es la cuestión de la hipercomputación (o computación super-Turing). A este cuestionamiento del modelo computacional de la máquina de Turing ha contribuido la física cuántica, que podría aportar un nuevo modelo computacional más avanzado debido a la posibilidad de proceso paralelo y su mayor capacidad de computación.

Hipercomputación y computación super-Turing no son exactamente sinónimos. Puesto que la máquina de Turing es físicamente realizable, la computación super-Turing se supone que es también físicamente realizable, mientras que en la hipercomputación no hay tal suposición; es un modelo teórico o abstracto.

En principio, la hipercomputación es adoptar un nuevo modelo teórico de computación que superase las limitaciones señaladas.


Lenguaje de programación esencial

Un lenguaje de programación esencial es un lenguaje con las características mínimas o esenciales para que sea capaz de expresar cualquier algoritmo. Se demuestra [Brookshear, 1993] que las características de dicho lenguaje de programación esencial son:
  1. Tipo de datos: número entero no negativo.

  2. Identificadores: nombres, cada uno de los cuales tiene asociado un valor.

  3. Sentencias simples:


  4. Estructura de control (sentencia compuesta):

Cualquier lenguaje de programación que tenga esta características mínimas tiene el máximo poder computacional conocido. Cualquier otra característica adicional no añade poder computacional alguno.


Algoritmo vs. Sistema interactivo

La tecnología de la computación ha evolucionado desde los modelos algorítmicos (deterministas) a los modelos interactivos (no deterministas). Esta evolución ha sido motivada por las limitaciones de los algoritmos:
  1. La salida de un algoritmo está completamente determinada por la entrada, Todo algoritmo es determinista.

  2. No tiene en cuenta el entorno, el cambiante mundo exterior. A la hora de computar son ciegos y mudos. No “ven” el entorno (para poder reaccionar o adaptarse a las circunstancias) ni “hablan” al entorno (no lo modifican).
Un sistema interactivo es una generalización de algoritmo en el sentido de que la interactividad no está orientado a buscar un resultado, sino que reacciona (interna y exteriormente) a los estímulos del entorno. Un algoritmo es un caso particular de sistema interactivo cuando no tiene estados internos ni se considera el entorno. Un sistema interactivo no sustituye al algoritmo, sino que es un grado de libertad adicional. Cuando no hay interactividad, tenemos el algoritmo tradicional, con una sola entrada, que realiza la computación y devuelve el resultado.

Los sistemas interactivos suministran un modelo o marco para inteligencia artificial, sistemas operativos, sistemas distribuidos, etc.

Por lo tanto, un sistema interactivo posee ventajas sobre el algoritmo:
MENTAL: un Modelo Computacional Universal

MENTAL proporciona recursos computacionales que van más allá de una máquina de Turing. Es un modelo hipercomputacional (de tipo teórico) basado en expresiones construidas con las primitivas semánticas universales (o arquetipos primarios). Las expresiones pueden hacer uso de todos los recursos del lenguaje. En particular, una expresión puede tener la forma de un algoritmo, que es una expresión que contiene el comienzo y la finalización de la ejecución, con la devolución de un resultado.


MENTAL, un lenguaje de programación esencial

MENTAL cumple los requerimientos de un lenguaje de programación esencial y, por lo tanto, permite expresar cualquier problema que tenga una solución algorítmica:

Lenguaje de programación esencialMENTAL
1Tipo de datos: entero no negativo.Existe.
2Identificadores: nombres, cada uno de los cuales tiene asociado un valor.Pueden especificarse.
3incr nombre; (incrementa en 1 el valor asociado a nombre)(nombre = nombre + 1)
4decr nombre; (decrementa en 1; si es cero, permanece dicho valor).( nombre>0 → (nombre = nombre − 1) )
5Estructura de control:
While nombre ≠ 0 do;
  x
End;
⟨( (nombre ≠ 0) → x )⟩


Características de MENTAL como modelo computacional La tabla siguiente resume estas características diferenciadoras, en donde puede verse que el modelo computacional de la máquina de Turing es un modelo débil, y MENTAL es un modelo fuerte y completo. MENTAL es la realización del sueño de Church de crear un lenguaje o sistema formal para la matemática.

CaracterísticaMáquina de TuringMENTAL
Modelo teórico
Nivel de abstracciónBajoSupremo
ModeloParticularUniversal
LímitesTesis Chuch-TuringGrados de libertad
SimplicidadSí (operativo)Sí (conceptual)
ComputaciónElementalGeneral
AlgorítmicaElementalSemántica
EntornoNoSí (espacio abstracto)
InteractividadNo
Código modificableNo
Lenguaje formalNo
Tipo de modeloOperativoOperativo y descriptivo
ParalelismoNo
Estructuras de informaciónLimitadasLas de las primitivas
ReflexividadNo
ParadigmasImperativoUniversal
Modelo de la menteNoSí (universal)


Especificación de una máquina de Turing en MENTAL Ejemplos:
  1. Máquina de Turing que graba la cinta con el carácter “1” desde la posición inicial a la derecha, indefinidamente:

    ( grabaunos = ( (b = " ")
       (cinta =: b★)
       (i = 1) )
    )
    ⟨( (cinta\i = "1") (i = i+1) )⟩


    en donde, como se ve, no existe ninguna condición en la única regla existente y hay dos acciones: grabar "1" y avanzar una posición a la derecha.

  2. Máquina de Turing que busca un determinado símbolo s sobre la cinta, hacia la derecha, y cuando lo encuentra se para:

    ( buscar = ( (i° = 1)
    ⟨((cinta\i = s) → ¡) (i = i+1))⟩ )!
    )


    En este caso no es necesario definir estados ni alfabeto. Solo hay una condición y una acción.

  3. Máquina de Turing con la tabla anterior de la MTU:

    ( Turing = (
    //
    // valores iniciales
    //
    ( i = 1 ) // posición inicial del cabezal
    ( j = 1 ) // estado inicial
    ( cinta =: " "★) // cinta inicial (secuencia infinita a blancos)
    //
    // reglas
    //
    ⟨ ((est=1 → (cinta\i = a)) →
    ((cinta\i = c) (i = i+1) (j = 2)))
    ((est=2 → (cinta\i = b)) →
    ((cinta\i = a) (i = i−1) (j = 3)))
    ((est=3 → (cinta\i = c)) →
    ((cinta\i = b) (j = 1))) ⟩
    )


    En este caso, las 3 reglas tienen 2 condiciones y 3 acciones.

Primitivas semánticas utilizadas en una máquina de Turing

La máquina de Turing tiene a nivel operativo solamente 4 grados de libertad, que se corresponden con los tipos de operaciones que utiliza. Además, estas operaciones están restringidas a contextos específicos, no genéricos:
  1. El movimiento del cabezal hacia la derecha o hacia la izquierda. Se correspondería con la operación de suma/resta, respectivamente. El contexto es el número de orden de las celdas de la cinta.

  2. La sustitución del símbolo de la celda (a donde apunta el cabezal), por otro. También la sustitución de un estado por otro. La operación es la de sustitución. Los contextos son los símbolos de las celdas y los estados de la máquina.

  3. Las condiciones de las reglas.
    La operación es la de condición. Los contextos son el estado de la máquina y el símbolo de la cinta apuntado por el cabezal.

  4. Examen, en todo momento, del conjunto de reglas para aplicar aquella que cumpla las condiciones.
    La operación corresponde a la de expresión genérica, que se evalúa en todo momento.
Con las 4 dimensiones operativas de la máquina de Turing podemos implementar algoritmos a un nivel de abstracción muy bajo, con mucho detalle, de forma muy superficial. A medida que elevamos el nivel de abstracción, encontramos más grados de libertad y, por lo tanto, más flexibilidad y más posibilidades expresivas, tanto a nivel operativo como descriptivo.

MENTAL ofrece más grados de libertad que una máquina de Turing. En MENTAL los grados de libertad son las propias primitivas.

A nivel general (no solo operativo), en la implementación de la máquina de Turing se utilizan (explícita o implícitamente) las siguientes primitivas de MENTAL:

PrimitivaFunción
1(...) (secuencia)Secuencia de los elementos de la cinta (memoria lineal)
2+ (suma) y
(resta)
Desplazar respectivamente hacia la derecha y hacia la izquierda el cabezal sobre la cinta
3= (sustitución)Sustituir el símbolo en una celda de la cinta en la posición del cabezal
4=: (sustitución diferida, representación)Se utilizan indirectamente en las operaciones derivadas (repetición) y (rango)
5 (condición)Condición de cada regla de funcionamiento de la máquina
6\ (particularización cuantitativa)Acceder a un determinado símbolo (del alfabeto o de la cinta)
7evaluación (no hay símbolo) y ° (no evaluación)En las expresiones de sustitución
8Generalización no parametrizadaEn las definiciones de las reglas

Las primitivas que no se utilizan son:
  1. Conjunto (agrupación paralela). La máquina de Turing es una máquina secuencial que utiliza una memoria secuencial.

  2. Ejecución (comienzo y fin).

  3. Navegación por una estructura jerárquica. La estructura de la memoria de la máquina de Turing (la cinta) es lineal.

  4. Particularización cualitativa.

  5. Equivalencia.

  6. Generalización parametrizada.

  7. Parar y continuar.


Adenda

El Entscheidungsproblem

El Entscheidungsproblem, o problema de la decidibilidad, es un problema planteado inicialmente por David Hilbert en el Congreso Internacional de Matemáticos de Paris de 1900, pero que evolucionó a una cuestión de tipo general. Se trata del problema de la decidibilidad de una proposición matemática, de saber si existe un algoritmo que permita determinar si una proposición matemática es verdadera o falsa en un sistema axiomático formal.

A este problema hubo varias respuestas: La demostración de Turing fue aceptada por Gödel y Church como el argumento más simple y mejor.


Demostración de la indecidibilidad del problema de la parada

La demostración (por reducción al absurdo) de que este problema es indecidible es similar a la de Gödel con su teorema de incompletud:
La máquina de Turing universal (MTU) más simple

Un modelo computacional que simule una MTU, o tenga el mismo poder computacional que una MTU, se denomina “Turing-completo”. En teoría, puede haber muchas MTU, según el número m de estados internos y el número n de símbolos (también llamados “colores”), que se puede identificar con estos dos parámetros como MTU(m, n).

Claude Shannon [1956] fue el primero en plantear la cuestión de encontrar la MTU más pequeña posible. Demostró que 2 símbolos son suficientes sin limitación en el número de estados, o bien 2 estados sin limitaciones en el número de símbolos.

Marvin Minsky demostró en 1961 que cualquier algoritmo se puede implementar en una máquina mínima con solo 2 registros numéricos y 3 instrucciones: incrementar el valor de un registro, decrementar el valor de un registro y bifurcar a otra instrucción si el valor de un registro es cero. En 1962, Marvin Minsky encontró una MTU(7, 4) (7 estados, 4 símbolos).

Hoy sabemos que la MTU más pequeña es MTU(2, 3), es decir 2 estados y 3 símbolos. Wolfram, en su obra “A New Kind of Science” [2002], describía un autómata celular que era una MTU de 2 estados y 5 colores y conjeturaba que una MTU(2, 3) podía ser también universal. El 14 de Mayo de 2007, Wolfram anunció un premio de 25.000 $ para la primera persona que demostrase o refutase esta conjetura. El 24 de Octubre de 2007 se anunció que el premio lo había ganado Alex Smith, un estudiante de 20 años de electrónica e informática de la Universidad de Birminham. Wolfram quería demostrar cómo la complejidad emerge de los sistemas más simples.


Las extensiones de una máquina de Turing

En su tesis de 1938, Turing hacía referencia a distintos tipos de máquinas:
Bibliografía